Второе дыхание. Динамики

Author

Slastya Yura

Промежуточные наблюдения

  1. В основном респонденты отмечают, что качество ненужной одежды, которую они сдавали или продавали за 2 года не изменилось. При этом респондентов, отметивших, что качество одежды, которую они сдают, стало лучше больше тех, кто стал сдавать менее качественные вещи (аналогично с продажей).
  2. Респонденты стали заметно чаще носить вещи до полного износа или переделывать их.
  3. Если верить графикам, то респонденты в выборке за последние 2 года стали в подавляющем количестве чаще пользоваться контейнерами для обращения с ненужной одежды.
  4. Респонденты стали чаще продавать вещи через интернет.

Установка библиотек, загрузка данных

Code
%%capture
! pip install pyspssio
Code
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
import pyspssio
import re

sns.set_palette("pastel")
sns.set_theme(style="whitegrid", palette="pastel", context="notebook")

df, meta = pyspssio.read_sav("Data_frame_VD.sav")

Уверенность в завтрашнем дне, надежды на будущее

Code
names = [
    'confident_about_future', 
    'changed_confident', 
    'changed_fin_sit', 
    'expectation'
    ]

for name in names:
    unique_labels = list(meta['var_value_labels'][name].values())
    order = unique_labels
    palette = sns.color_palette("pastel", n_colors=len(unique_labels))
    color_mapping = dict(zip(unique_labels, palette))
    plt.figure(figsize=(8, 6))
    sns.countplot(
        x=df[name].map(meta['var_value_labels'][name]),
        hue=df[name].map(meta['var_value_labels'][name]),
        order=order,
        palette=color_mapping
    )
    plt.ylabel('Число респондентов', fontsize=12)
    plt.title(meta['var_labels'][name].replace(" Выберите один вариант ответа.", ""), fontsize=14, ha='center', wrap=True)
    plt.xlabel('Варианты ответа', fontsize=12, wrap=True)
    plt.xticks(fontsize=12, rotation=45, ha='right')
    plt.yticks(fontsize=12)
    plt.savefig(name, dpi=300, bbox_inches='tight')
    plt.show()

Изменения качества, количества ненужной одежды при продаже и передаче бесплатно за последние 2 года

Code
names = [
    'count_clothes_free',
    'count_clothes_sale',
    'quality_clothes_free',
    'quality_count_clothes_sale'
    ]

for name in names:
    unique_labels = list(meta['var_value_labels'][name].values())
    order = unique_labels
    palette = sns.color_palette("pastel", n_colors=len(unique_labels))
    color_mapping = dict(zip(unique_labels, palette))
    plt.figure(figsize=(8, 6))
    sns.countplot(
        x=df[name].map(meta['var_value_labels'][name]),
        hue=df[name].map(meta['var_value_labels'][name]),
        order=order,
        palette=color_mapping
    )
    plt.ylabel('Число респондентов', fontsize=12)
    plt.title(meta['var_labels'][name].replace(" Выберите один вариант ответа.", ""), fontsize=14, ha='center', wrap=True)
    plt.xlabel('Варианты ответа', fontsize=12, wrap=True)
    plt.xticks(fontsize=12, rotation=45, ha='right')
    plt.yticks(fontsize=12)
    plt.savefig(name, dpi=300, bbox_inches='tight')
    plt.show()

Почему по мнению людей могло ухудшиться качество сдаваемой одежды за последние 2 года

Code
questions = {
    'q2_1': 'Одежда в магазинах стала хуже',
    'q2_2': 'Люди стали покупать более дешевую\nодежду и хуже по качеству',
    'q2_3': 'Люди стали чаще ремонтировать и\nчинить одежду',
    'q2_4': 'Люди стали дольше носить одежду',
    'q2_5': 'Из-за неуверенности в завтрашнем дне\nлюди стали менее охотно отдавать одежду',
    'q2_6': 'Люди стали реже избавляться от одежды,\nдонашивают ее дома или на даче',
    'q2_7': 'Это проблема отдельных фондов.\nНа мой взгляд, ситуация\nв целом не изменилась',
    'q2_8': 'Затрудняюсь ответить'
}

sums_df = df[['q2_1', 'q2_2', 'q2_3', 'q2_4', 'q2_5', 'q2_6', 'q2_7', 'q2_8']].sum().reset_index()
sums_df.columns = ['quest', 'count_ans']
sums_df['quest'] = sums_df['quest'].map(questions)

plt.figure(figsize=(10, 6))
sns.barplot(
    x=sums_df['quest'],
    y=sums_df['count_ans'],
    hue=sums_df['quest']
)

plt.xticks(rotation=45, ha='right')
plt.ylabel('Количество ответов', fontsize=12)
plt.title('Учитывая опыт ваш и вашего окружения, как вы думаете, почему могло ухудшиться качество сдаваемой в фонды одежды за два года? (множественный выбор)', fontsize=14, ha='center', wrap=True)
plt.xlabel('Варианты ответа', fontsize=12, wrap=True)
plt.xticks(fontsize=12, rotation=45, ha='right')
plt.yticks(fontsize=12)
plt.savefig('changing_in_quality', dpi=300, bbox_inches='tight')
plt.show()

Изменения частот пользования способами обращения ненужной одеждой за последние 2 года

Code
freqs_names = {    
    'frequency1': 'Выбрасывать на помойку',
    'frequency2': 'Оставлять у мусорного бака',
    'frequency3': 'Оставлять дома, «до лучших времен»',
    'frequency4': 'Использовать одежду до полного износа',
    'frequency5': 'Выкладывать в подъезде, на добрые полки',
    'frequency6': 'Переделывать, реставрировать для дальнейшего использования',
    'frequency7': 'Отдавать членам семьи',
    'frequency8': 'Отдавать друзьям, знакомым, соседям',
    'frequency9': 'Бесплатно передавать через интернет-площадки, онлайн сообщества, чаты незнакомым людям',
    'frequency10': 'Передавать в храм, пункты социальной помощи',
    'frequency11': 'Передавать в благотворительный фонд, благотворительный магазин',
    'frequency12': 'Класть в контейнер для сбора одежды',
    'frequency13': 'Приносить одежду на СВОП (мероприятие для обмена одеждой)',
    'frequency14': 'Участвовать в акциях для сбора одежды на благотворительность',
    'frequency15': 'Продавать через интернет',
    'frequency16': 'Сдавать на продажу в секонд-хенд магазин',
    'frequency17': 'Сдавать на утилизацию в магазины, чтобы  получить скидку на новые товары'
}

unique_labels = list(meta['var_value_labels']['frequency1'].values())

palette = sns.color_palette("pastel", n_colors=len(unique_labels))
color_mapping = dict(zip(unique_labels, palette))

freqs = [f'frequency{ii}' for ii in range(1, 17+1)]
for freq in freqs:
    plt.figure(figsize=(8, 6))

    order = unique_labels
    sns.countplot(
        x=df[freq].map(meta['var_value_labels']['frequency1']),
        hue=df[freq].map(meta['var_value_labels']['frequency1']),
        order=order,
        palette=color_mapping
    )
    plt.ylabel('Число респондентов', fontsize=12)
    plt.title('Как за последние 2 года изменилась частота, с которой вы пользуетесь способом обращения с ненужной вам одеждой?', fontsize=14, ha='center', wrap=True)
    plt.xlabel(freqs_names[freq], fontsize=14, wrap=True)
    plt.xticks(fontsize=12)
    plt.yticks(fontsize=12)
    plt.savefig(f'changed_{re.sub(r'\D', '', freq)}', dpi=300, bbox_inches='tight')
    plt.show()